package HookDemo;
import java.lang.Thread.State;
	public class TestShutdownHook3 {
	    /**
	     * 测试线程，用于模拟一个原子操作
	     */
	    /**
	     * 注册hook程序，保证线程能够完整执行
	     * @param checkThread
	     */
	    public void addShutdownHook(final Thread checkThread) {
	        //为了保证TaskThread不在中途退出，添加ShutdownHook
	        Runtime.getRuntime().addShutdownHook(new Thread() {
	            public void run() {
	                System.out.println("收到关闭信号，hook起动，开始检测线程状态 ...");
	                
//	                System.out.println("线程时间"+checkThread.getState());
//	                //不断检测一次执行状态，如果线程一直没有执行完毕，超时后，放弃等待       \
//	                for (int i = 0; i < 100; i++) {
//	                    if (checkThread.getState() == State.TERMINATED) {
//	                        System.out.println("检测到线程执行完毕，退出hook");
//	                        return;
//	                    }
//	                   try {
//						Thread.sleep(100);
//					} catch (InterruptedException e) {
//						e.printStackTrace();
//					}
//	                }
//	                System.out.println("检测超时，放弃等待，退出hook，此时线程会被强制关闭");
	            }
	        });
	    }
	}